package main

import (
	"fmt"
	"strconv"
	"strings"
)

func main() {
	// 统计字符长度, len()
	str := "golang你好"     // 汉字是utf-8字符集,一个汉字是3个字节
	fmt.Println(len(str)) // 12

	// 对字符遍历:
	// 方式1: for-range
	for i, value := range str {
		fmt.Printf("索引为:%d, 具体的值为:%c   \n", i, value)
	}
	// 方式2: r:=[]rune(str)
	r := []rune(str)
	for i := 0; i < len(r); i++ {
		fmt.Printf("%c   \n", r[i])
	}

	// 字符串转整数
	num1, _ := strconv.Atoi("666")
	fmt.Println(num1)

	// 整数转字符串
	str1 := strconv.Itoa(88)
	fmt.Println(str1)

	// 统计一个字符串中有几个指定的字符
	count := strings.Count("golanggolandjava", "go") // 包含了2个"go"
	fmt.Println(count)                               // 2

	// 不区分大小写比较字符串
	flag := strings.EqualFold("hello", "HELLO")
	fmt.Println(flag) // true
	// 区分大小写比较字符串,使用==比较
	fmt.Println("hello" == "HELLO") // false

	// 返回指定字符在字符串出现的索引值,如果没有,返回-1
	index := strings.Index("golanggolandjava", "and")
	fmt.Println(index) // 9

	// 字符串替换,最后一个参数表示替换几个,如果是2,那就替换2个,如果传-1表示全部替换
	replaceStr := strings.Replace("gogogo", "go", "golang", 1)
	fmt.Println(replaceStr) // golanggogo

	// 根据某个字符分割标识,将字符串拆分成数组
	splitStr := strings.Split("go-python-java", "-")
	fmt.Println(splitStr) // [go python java]

	// 字符串字母进行大小写转行
	toLower := strings.ToLower("GO")
	fmt.Println(toLower) // go
	toUpper := strings.ToUpper("go")
	fmt.Println(toUpper) // GO

	// 去掉字符串两边空格
	trimSpaceStr := strings.TrimSpace("      go and java      ")
	fmt.Println(trimSpaceStr) // go and java

	// 去掉字符串左右两边指定的字符
	trimStr := strings.Trim("~go~", "~")
	fmt.Println(trimStr) // go

	// 去掉字符串左边指定的字符
	trimLeft := strings.TrimLeft("~go~", "~")
	fmt.Println(trimLeft) // go~
	// 去掉字符串右边指定的字符
	trimRight := strings.TrimRight("~go~", "~")
	fmt.Println(trimRight) // ~go

	// 判断字符串是否以指定字符开头
	hasPrefixStr := strings.HasPrefix("https://www.baidu.com/", "https")
	fmt.Println(hasPrefixStr) // true

	// 判断字符串是否以指定字符结尾
	hasSuffixStr := strings.HasSuffix("https://www.baidu.com/", "https")
	fmt.Println(hasSuffixStr) // false
}
